"########################################"
" Config vim mappings
"########################################"

"########################################"
" Use Space key as leader key
"########################################
let mapleader = "\<Space>"
inoremap <Space><Space> <Space>
 
"########################################"
"Ant Deploy Mappings
"########################################
map <leader>dp	:w<CR>:!ant <CR>
map <leader>rd  :!ant exploded-ear-clean;ant;<CR>

"########################################"
"Django manage.py configurations
"########################################
nnoremap <leader>pmm :!python manage.py makemigrations
nnoremap <leader>pcm :!python manage.py migrate<CR>
nnoremap <leader>ps  :!python manage.py shell<CR>
nnoremap <leader>prs :!python manage.py runserver<CR>

"########################################"
"Vim window navigation mappings"
"########################################
nmap ,b  0zz
nmap ,e  $zz
map <c-h> <c-w>h
map <c-l> <c-w>l
map <c-j> <c-w>j
map <c-k> <c-w>k

"########################################"
"vim tab navigation mappings
"########################################
nnoremap <C-Left> :tabprevious<CR>
nnoremap <C-Right> :tabnext<CR>
inoremap <C-Left> <Esc>:tabprevious<CR>
inoremap <C-Right> <Esc>:tabnext<CR>
""nnoremap <C-u> :tabprevious<CR>
""nnoremap <C-n> :tabnext<CR>
""inoremap <C-u> <Esc>:tabprevious<CR>
""inoremap <C-n> <Esc>:tabnext<CR>

"########################################"
"Quote Match pairs 
"########################################
nmap <leader>pa %


"########################################"
"Line insert Mappings
"########################################
nnoremap 2o o<CR><Esc>ki
nnoremap o o<c-o>zz

"########################################"
"Window adjust Mappings
"########################################
nmap n nzz
nmap N Nzz
nmap gg ggzz 
nmap G  Gzz


"########################################"
"Save Mappings
"########################################
nnoremap <leader>w   :w<CR>

"########################################"
"Delete Mappings
"########################################
nnoremap de d$
nnoremap db d0
nnoremap dd dd
"inoremap dd <Esc>dd

"########################################"
"Copy&Paste Mappings
"########################################
"copy all the buffer content
map <leader>ya  <Esc>ggvG$"+y
"copy until the end of line
nnoremap ye y$
"copy until the beginning of line
nnoremap yb y^
"copy all the content into system clipboad
map <leader>ys "+yy
"paste the content from system clipboard
map <leader>p "+p


"########################################
"Esc key Mappings
"########################################
inoremap jj <Esc>
inoremap jk <Esc>
inoremap kk <Esc>


"########################################
"Exits Mappings
"########################################
inoremap ,w	 <Esc>:w<CR>
nnoremap ,w	 :w<CR>
nnoremap ,q :q<CR>
nnoremap ,qa :qa<CR>
nnoremap ,wq :wq<CR>
nnoremap ,wqa :wqa<CR>


"########################################"
"Change letter case
"########################################
nnoremap gue gu$
nnoremap gub gu^
nnoremap gUe gU$
nnoremap gUb gU^

"########################################"
"Update Actions 
"########################################
map <leader>e :e<CR>
map <leader>x :x<CR>



"########################################"
"Search Actions
"########################################
map <leader>f :tabfind 


"########################################"
"Turn off disturb message prompt
"########################################
map  q: :q



"########################################"
"Command line Mappings
"########################################
"enter shell command line
map <leader>c :!

"executing current line as shell command
map <leader>cl :.w !bash<CR>

"executing current executable script file
map <leader>cs :call RunCurrentScript()<CR>


"########################################"
"Git Mappings
"########################################
"upload local repo to remote repo
nnoremap <leader>gu :!git add -A;git commit -m 'updated';git push origin master<CR>
"fetch remote repo to local repo
nnoremap <leader>gl :!git fetch origin ; git pull origin master<CR>

"########################################"
" Autocomplete match bracks
"########################################
inoremap <leader>( ()<Esc>i
inoremap <leader>[ []<Esc>i
inoremap <leader>{ {}<Esc>i
inoremap <leader>< <><Esc>i
inoremap ) <c-r>=ClosePair(')')<CR>
inoremap ] <c-r>=ClosePair(']')<CR>
inoremap > <c-r>=ClosePair('>')<CR>
inoremap } <c-r>=ClosePair('}')<CR>
inoremap <leader>" <c-r>=QuoteDelim('"')<CR>
inoremap <leader>' <c-r>=QuoteDelim("'")<CR>
inoremap <leader>` <c-r>=QuoteDelim("`")<CR>

"inoremap  <Tab> <c-r>=SkipBracket()<CR>

"########################################"
"Run Config Command Mapping
"########################################
"executing the vim configuration file and reload system .vimrc file
nnoremap <leader>vc :!./config.sh<CR>:source $MYVIMRC<CR><CR>
"reload the .vimrc configuration file
nnoremap <leader>vs :source $MYVIMRC<CR>
